package pe.com.casadesign.service.impl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import pe.com.casadesign.dao.OrdenCompraDAO;
import pe.com.casadesign.domain.ListaOrdenCompra;
import pe.com.casadesign.domain.OperacionResultado;
import pe.com.casadesign.domain.OrdenCompra;
import pe.com.casadesign.domain.Prestamo;
import pe.com.casadesign.service.OrdenCompraService;
import pe.com.casadesign.service.util.Constantes;

/**
 * Implementacion de OrdenCompraService.
 * 
 * @author Pedro Vera
 * 
 */
@Service
public class OrdenCompraServiceImpl implements OrdenCompraService {

    @Autowired
    private OrdenCompraDAO ordenCompraDAO;
    
	@Override
	public ListaOrdenCompra listarOrdenCompra(OrdenCompra ordenCompra) {
		return ordenCompraDAO.listarOrdenCompra(ordenCompra);
	}

	@Override
	public OrdenCompra obtenerOrdenCompra(OrdenCompra ordenCompra) {
		return ordenCompraDAO.obtenerOrdenCompra(ordenCompra);
	}

	@Override
	@Transactional (propagation=Propagation.REQUIRED, rollbackFor=Exception.class)
	public OperacionResultado registrarOrdenCompra(OrdenCompra ordenCompra) {
		boolean resultado = ordenCompraDAO.registrarOrdenCompra(ordenCompra);
		
		OperacionResultado operacionResultado = new OperacionResultado();
		operacionResultado.setCodigoGenerado(String.valueOf(ordenCompra.getCodOC()));
		operacionResultado.setEsOK(resultado?Constantes.SI:Constantes.NO);
		
		return operacionResultado;
	}
	
	
	@Override
	@Transactional (propagation=Propagation.REQUIRED, rollbackFor=Exception.class)
	public OperacionResultado modificarOrdenCompra(OrdenCompra ordenCompra) {
		boolean resultado1 = ordenCompraDAO.modificarOrdenCompra(ordenCompra)>0;
		
		int limpiar = ordenCompraDAO.limpiarOrdenCompraDetalle(ordenCompra);
		
		boolean resultado2  = ordenCompraDAO.registrarOrdenCompraDetalle(ordenCompra)>0;
		
		OperacionResultado operacionResultado = new OperacionResultado();
		operacionResultado.setCodigoGenerado(String.valueOf(ordenCompra.getCodOC()));
		operacionResultado.setEsOK((resultado1&&resultado2)?Constantes.SI:Constantes.NO);
		
		return operacionResultado;
	}

}
